9a428def2df1b8c6b0d0428b200a03eda1d6f31c,jetty-io/src/main/java/org/eclipse/jetty/io/AbstractEndPoint.java,AbstractEndPoint,onIdleExpired,#TimeoutException#,144

Before Change


    {
        // Note: Rely on fillInterest to notify onReadTimeout to close connection.
        _fillInterest.onFail(timeout);
        _writeFlusher.onFail(timeout);
    }

    @Override

After Change


        boolean output_shutdown=isOutputShutdown();
        boolean input_shutdown=isInputShutdown();
        boolean fillFailed = _fillInterest.onFail(timeout);
        boolean writeFailed = _writeFlusher.onFail(timeout);
        
        // If the endpoint is half closed and there was no onFail handling, the close here
        // This handles the situation where the connection has completed its close handling 
        // and the endpoint is half closed, but the other party does not complete the close.
        // This perhaps should not check for half closed, however the servlet spec case allows
        // for a dispatched servlet or suspended request to extend beyond the connections idle 
        // time.  So if this test would always close an idle endpoint that is not handled, then 
        // we would need a mode to ignore timeouts for some HTTP states
        if (isOpen() && (output_shutdown || input_shutdown) && !(fillFailed || writeFailed))
            close();
        else 
            LOG.debug("Ignored idle endpoint {}",this);